package cn.iocoder.yudao.module.wine.api;

import cn.iocoder.yudao.module.wine.api.dto.BrokerageUserNewDTO;
import cn.iocoder.yudao.module.wine.api.dto.MemberDeadlineDTO;
import cn.iocoder.yudao.module.wine.api.dto.MemberOpenLogDTO;
import cn.iocoder.yudao.module.wine.api.dto.MemberTypeDTO;

/**
 * @author zyc
 * @createDate 2024/5/15 14:54
 */
public interface MemberDeadlineApi {

    /**
     * 根据会员类型id获取会员类型信息
     * @param memberTypeId
     * @return
     */
    MemberTypeDTO getMemberTypeInfo(Long memberTypeId);



    /**
     * 根据用户id获取会员日期(有效期内的)
     * @param userId
     * @return
     */
    MemberDeadlineDTO getMemberDeadlineInfoByUserId(Long userId);

    /**
     * 根据用户id获取会员日期
     * @param userId
     * @return
     */
    MemberDeadlineDTO getMemberDeadlineByUserId(Long userId);

    /**
     * 添加会员期限信息
     * @param memberDeadlineDTO
     * @return
     */
    Boolean addMemberDeadline(MemberDeadlineDTO memberDeadlineDTO);

    /**
     * 修改会员期限信息
     * @param memberDeadlineDTO
     * @return
     */
    Boolean editMemberDeadline(MemberDeadlineDTO memberDeadlineDTO);



    /**
     * 添加会员开通记录
     * @param logDTO
     * @return
     */
    Boolean addMemberOpenLog(MemberOpenLogDTO logDTO);

    /**
     * 编辑会员开通记录
     * @param logDTO
     * @return
     */
    Boolean editMemberOpenLog(MemberOpenLogDTO logDTO);

    /**
     *
     * @param outTradeNo
     * @return
     */
    MemberOpenLogDTO getMemberOpenLog(String outTradeNo);




    BrokerageUserNewDTO getBrokerageUserByIds(Long bindUserId, Long loginUserId);

    /**
     * 根据用户id获取上级用户id
     * @param userId
     * @return
     */
    BrokerageUserNewDTO getBindUserId(Long userId);

    /**
     * 根据用户id获取佣金记录
     * @param userId
     * @return
     */
    BrokerageUserNewDTO getBrokerageUser(Long userId);

    /**
     * 添加用户佣金记录
     * @param data
     * @return
     */
    BrokerageUserNewDTO addBrokerageUser(BrokerageUserNewDTO data);

    /**
     * 修改佣金记录
     * @param data
     * @return
     */
    Boolean updateBrokerageUser(BrokerageUserNewDTO data);

}
